﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using GanagroLiteBO;
using GeneralUtilities;

namespace GanagroLite
{
    public partial class FormMuertes : GanagroLite.WinPart
    {
        private MuerteBO currentMuerte;
        private DateTime DTlastFecha;

        public FormMuertes()
        {
            InitializeComponent();
            currentMuerte = new MuerteBO();
            currentMuerte.OPERACION = (short)TiposOperacion.Muerte;
            this.bindingSourceMuertes.DataSource = currentMuerte; 

        }

        #region Internal methods

        protected internal override object GetIdValue()
        {
            return "Muerte Semovientes";
        }

        public override string ToString()
        {
            return "Muerte Semovientes";
        }

        #endregion

        private void FormMuertes_Load(object sender, EventArgs e)
        {
            this.bindingSourceComentarios.DataSource = UtilityDB.LoadComentarios((short)TiposOperacion.Muerte);
            this.cboComentario.DataSource = bindingSourceComentarios;
            this.cboComentario.ValueMember = "NCOMENTARIO";
            this.cboComentario.DisplayMember = "DESCRIPCION";
            this.textBoxCodigo.Focus();

            this.backgroundWorker1.WorkerReportsProgress = true;
            this.backgroundWorker1.RunWorkerAsync();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(textBoxCodigo.Text.Trim()))
                {
                    MessageBox.Show("Codigo no puede ser Nulo");
                    return;
                }

                if (currentMuerte.IsValid() == false)
                {
                    return;
                }

                    currentMuerte.Guardar();
                    this.textBoxCodigo.Text = string.Empty;
                    MainForm.Instance.status = string.Format("Muerte ({0}) registrada.", currentMuerte.CODIGO);
                    currentMuerte.CODIGO = string.Empty;

                    //DateTime Ultimafecha = currentMuerte.FECHA;
                    //currentMuerte = null;
                    //currentMuerte = new MuerteBO();
                    //currentMuerte.FECHA = Ultimafecha;
                    //currentMuerte.OPERACION = (short)TiposOperacion.Muerte;
                    //this.bindingSourceMuertes.DataSource = currentMuerte; 
                    this.dtPickerFecha.Focus();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message, "Mensaje de error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void buttonSalir_Click(object sender, EventArgs e)
        {
            this.bindingSourceComentarios.CancelEdit();
            this.bindingSourceMuertes.CancelEdit();
            this.Close();
        }

        private void textBoxCodigo_Validated(object sender, EventArgs e)
        {
            if (currentMuerte.CODIGO != null)
            {
                GLiteBO gbo = new GLiteBO(currentMuerte.CODIGO);
                this.contextMenuStrip1.Items.Clear();
                foreach (string str in gbo.ListaPesajes())
                {
                    this.contextMenuStrip1.Items.Add(str);
                }
            }
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            DTlastFecha = PresenterBO.GetLastFecha(TiposOperacion.Muerte);
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            currentMuerte.FECHA = DTlastFecha;
//            this.dtPickerFecha.Value = DTlastFecha;
        }

    }
}
